package com.glut.campusrepair.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.glut.campusrepair.entity.MaterialPurchases;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glut.campusrepair.entity.MaterialPurchasesExample;
import org.apache.ibatis.annotations.Update;

/**
* 材料采购表 Mapper
*
* @author sanminzhi
* @since 2024-07-19 11:26
*/
@Mapper
public interface MaterialPurchasesMapper extends BaseMapper<MaterialPurchases> {

    /**
     * 根据主键id查询
     *
     * @param purchaseId
     * @return 记录信息
     */
    MaterialPurchases selectByPrimaryKey(Integer purchaseId);

    /**
     * 根据主键删除数据
     *
     * @param purchaseId
     * @return 数量
     */
    int deleteByPrimaryKey(Integer purchaseId);

    /**
     * 删除数据
     *
     * @param example 条件
     * @return 删除数量
     */
    int deleteByExample(MaterialPurchasesExample example);

    /**
     * 插入数据库记录（不建议使用）
     *
     * @param record
     */
    int insert(MaterialPurchases record);

    /**
     * 插入数据库记录（建议使用）
     *
     * @param record 插入数据
     * @return 插入数量
     */
    int insertSelective(MaterialPurchases record);

    /**
     * 修改数据
     *
     * @param record  更新值
     * @param example 条件
     * @return 更新数量
     */
    int updateByExampleSelective(@Param("record") MaterialPurchases record, @Param("example") MaterialPurchasesExample example);

    /**
     * 修改数据
     *
     * @param record  更新值
     * @param example 条件
     * @return 更新数量
     */
    int updateByExample(@Param("record") MaterialPurchases record, @Param("example") MaterialPurchasesExample example);

    /**
     * 修改数据(推荐使用)
     *
     * @param record 更新值
     * @return 更新数量
     */
    int updateByPrimaryKeySelective(MaterialPurchases record);

    /**
     * 根据主键更新数据
     *
     * @param record 更新值
     * @return 更新数量
     */
    int updateByPrimaryKey(MaterialPurchases record);

    @Update("UPDATE materials_manage SET quantity = quantity + #{quantity} WHERE material_name = #{materialName}")
    void updateMaterialQuantity(@Param("materialName") String materialName, @Param("quantity") int quantity);
}
